<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>组件双向绑定</title>
    <script src="../vue.global.js"></script>
</head>
<body>
<div id="app"></div>
<script>
    const app = Vue.createApp({
        data() {
            return {
                count: "a"
            }
        },
        methods: {},
        // TODO: v-model.uppercase中 的uppercase是可以自定义的相当于标志，会将此标志传入到modelModifiers中
        template: `
          <counter v-model.uppercase="count"/> 
        `,
        mounted(){
            console.log(this)
        },

    });
    app.component('counter',{

        props:{
            'modelValue': String,
            // modelModifiers是一个对象，返回一个默认 default: {}/ ()=>{}
            'modelModifiers':{
                default:()=> {}
            }
        },
        methods:{
            handleClick(){
                // 将modelValue + b 作为新值
                let newValue = this.modelValue + 'b'
                // 如果这个modelModifiers包含传父组件传过来的标志，就进行下一步处理
                if(this.modelModifiers.uppercase){
                    newValue = newValue.toUpperCase();
                }
                // 子组件通信父组件，将旧值更新
                this.$emit("update:modelValue",newValue)
                // this指向子组件counter
                console.log(this);
            }
        },
        template:`
            <div @click="handleClick">{{modelValue}}</div>
        `
    })
    const vm = app.mount("#app");
</script>
</body>
</html>